in scala
package reflect

package reflect

Object Summary
case object NoPrefix
case object NoSymbol
case object NoType
case object RootSymbol

Class Summary
case class AppliedType(tpe: Type, args: List[Type])
case class Apply(fun: Code, args: List[Code])
case class Class(fullname: String)
abstract class Code()
case class Field(fullname: String, tpe: Type)
case class Function(params: List[Symbol], body: Code)
abstract class GlobalSymbol(fullname: String)
case class Ident(sym: Symbol)
  class ImplicitMethodType(formals: List[Type], restpe: Type)
case class Literal(value: Any)
case class LocalMethod(owner: Symbol, name: String, tpe: Type)
abstract class LocalSymbol()
case class LocalValue(owner: Symbol, name: String, tpe: Type)
case class Method(fullname: String, tpe: Type)
case class MethodType(formals: List[Type], restpe: Type)
case class NamedType(fullname: String)
case class PrefixedType(pre: Type, sym: Symbol)
case class Select(qual: Code, sym: Symbol)
case class SingleType(pre: Type, sym: Symbol)
abstract class Symbol()
case class ThisType(clazz: Symbol)
abstract class Type()
case class TypeApply(fun: Code, args: List[Type])
case class TypeBounds(lo: Type, hi: Type)
case class TypeField(fullname: String, tpe: Type)
  class TypedCode[T](code: Code)