code: func getFieldDef(schema Schema, parentType *Object, fieldName string) *FieldDefinition {
  
  	if parentType == nil {
  		return nil
  	}
  
  	if fieldName == SchemaMetaFieldDef.Name &&
  		schema.QueryType() == parentType {
  		return SchemaMetaFieldDef
  	}
  	if fieldName == TypeMetaFieldDef.Name &&
  		schema.QueryType() == parentType {
  		return TypeMetaFieldDef
  	}
  	if fieldName == TypeNameMetaFieldDef.Name {
  		return TypeNameMetaFieldDef
  	}
  	return parentType.Fields()[fieldName]
  }
docs: // This method looks up the field on the given type definition.
  // It has special casing for the two introspection fields, __schema
  // and __typename. __typename is special because it can always be
  // queried as a field, even in situations where no other fields
  // are allowed, like on a Union. __schema could get automatically
  // added to the query type, but that would require mutating type
  // definitions, which would cause issues.