anchor.diff:      return new KernelNamedTypeBuilder(cls.name, arguments)..bind(cls);
     }
   
  +  @override
     KernelTypeBuilder visitFunctionType(FunctionType node) {
  -    throw "Not implemented";
  +    KernelTypeBuilder returnType = node.returnType.accept(this);
  +    // We could compute the type variables here. However, the current
  +    // implementation of [visitTypeParameterType] is suffient.
  +    List<KernelTypeVariableBuilder> typeVariables = null;
  +    List<KernelFormalParameterBuilder> formals =
  +        <KernelFormalParameterBuilder>[];
  +    for (int i = 0; i < node.positionalParameters.length; i++) {
  +      KernelTypeBuilder type = node.positionalParameters[i].accept(this);
  +      FormalParameterKind kind = FormalParameterKind.mandatory;
  +      if (i >= node.requiredParameterCount) {
  +        kind = FormalParameterKind.optionalPositional;
  +      }
  +      formals.add(
  +          new KernelFormalParameterBuilder(null, 0, type, null, null, -1)
  +            ..kind = kind);
  +    }
  +
  +    return new KernelFunctionTypeBuilder(returnType, typeVariables, formals);
     }
   
     KernelTypeBuilder visitTypeParameterType(TypeParameterType node) {
  
positive.code:     show
          DynamicTypeBuilder,
          KernelClassBuilder,
          KernelNamedTypeBuilder,
          KernelTypeBuilder,
          KernelTypeVariableBuilder,
  
negative.code:         VoidTypeBuilder;
  
  import '../loader.dart' show Loader;
  
  import '../parser.dart' show FormalParameterKind;
  
  class TypeBuilderComputer implements DartTypeVisitor<KernelTypeBuilder> {
    final Loader<Library> loader;
  