// Path: src/main/java/com/nfl/glitr/registry/schema/GlitrFieldDefinition.java
// public class GlitrFieldDefinition extends FieldDefinition {
// 
//     private Set<GlitrMetaDefinition> metaDefinitions = new HashSet<>();
// 
// 
//     public GlitrFieldDefinition(String name, Type type) {
//         super(name, type);
//     }
// 
//     public GlitrFieldDefinition(String name, Set<GlitrMetaDefinition> metaDefinitions) {
//         super(name, null);
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public GlitrFieldDefinition(String name, Type type, Set<GlitrMetaDefinition> metaDefinitions) {
//         super(name, type);
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public Set<GlitrMetaDefinition> getMetaDefinitions() {
//         return metaDefinitions;
//     }
// 
//     public void setMetaDefinitions(Set<GlitrMetaDefinition> metaDefinitions) {
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public void addMetaDefinitions(GlitrMetaDefinition metaDefinition) {
//         if (this.metaDefinitions == null) {
//             this.metaDefinitions = new HashSet<>();
//         }
//         this.metaDefinitions.add(metaDefinition);
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/registry/schema/GlitrMetaDefinition.java
// public class GlitrMetaDefinition {
// 
//     private String name;
//     private Object value;
// 
// 
//     public GlitrMetaDefinition(String name, Object value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Object getValue() {
//         return value;
//     }
// 
//     public void setValue(Object value) {
//         this.value = value;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
// 
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         GlitrMetaDefinition that = (GlitrMetaDefinition) o;
// 
//         return new EqualsBuilder()
//                 .append(name, that.name)
//                 .isEquals();
//     }
// 
//     @Override
//     public int hashCode() {
//         return new HashCodeBuilder(17, 37)
//                 .append(name)
//                 .toHashCode();
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/registry/schema/GraphQLConnectionList.java
// public class GraphQLConnectionList extends GraphQLList {
//     public GraphQLConnectionList(GraphQLType wrappedType) {
//         super(wrappedType);
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/util/NodeUtil.java
// public static final String COMPLEXITY_IGNORE_KEY = "complexity_ignore";


import com.google.common.collect.Sets;
import com.nfl.glitr.registry.schema.GlitrFieldDefinition;
import com.nfl.glitr.registry.schema.GlitrMetaDefinition;
import com.nfl.glitr.registry.schema.GraphQLConnectionList;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLNonNull;
import graphql.schema.GraphQLObjectType;
import java.util.List;
import static com.nfl.glitr.util.NodeUtil.COMPLEXITY_IGNORE_KEY;
import static graphql.Scalars.*;
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
import static graphql.schema.GraphQLObjectType.newObject;
                    .description("When paginating forwards, are there more items?")
                    .build())
            .field(newFieldDefinition()
                    .name("hasPreviousPage")
                    .type(new GraphQLNonNull(GraphQLBoolean))
                    .description("When paginating backwards, are there more items?")
                    .build())
            .field(newFieldDefinition()
                    .name("startCursor")
                    .type(GraphQLString)
                    .description("When paginating backwards, the cursor to continue.")
                    .build())
            .field(newFieldDefinition()
                    .name("endCursor")
                    .type(GraphQLString)
                    .description("When paginating forwards, the cursor to continue.")
                    .build())
            .field(newFieldDefinition()
                    .name("previousPageStartCursor")
                    .type(GraphQLString)
                    .description("When paginating backwards, the cursor for the start of the previous page.")
                    .build())
            .field(newFieldDefinition()
                    .name("total")
                    .type(GraphQLBigInteger)
                    .description("Total number of elements in the connection.")
                    .build())
            .build();


// Path: src/main/java/com/nfl/glitr/registry/schema/GlitrFieldDefinition.java
// public class GlitrFieldDefinition extends FieldDefinition {
// 
//     private Set<GlitrMetaDefinition> metaDefinitions = new HashSet<>();
// 
// 
//     public GlitrFieldDefinition(String name, Type type) {
//         super(name, type);
//     }
// 
//     public GlitrFieldDefinition(String name, Set<GlitrMetaDefinition> metaDefinitions) {
//         super(name, null);
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public GlitrFieldDefinition(String name, Type type, Set<GlitrMetaDefinition> metaDefinitions) {
//         super(name, type);
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public Set<GlitrMetaDefinition> getMetaDefinitions() {
//         return metaDefinitions;
//     }
// 
//     public void setMetaDefinitions(Set<GlitrMetaDefinition> metaDefinitions) {
//         this.metaDefinitions = metaDefinitions;
//     }
// 
//     public void addMetaDefinitions(GlitrMetaDefinition metaDefinition) {
//         if (this.metaDefinitions == null) {
//             this.metaDefinitions = new HashSet<>();
//         }
//         this.metaDefinitions.add(metaDefinition);
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/registry/schema/GlitrMetaDefinition.java
// public class GlitrMetaDefinition {
// 
//     private String name;
//     private Object value;
// 
// 
//     public GlitrMetaDefinition(String name, Object value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public Object getValue() {
//         return value;
//     }
// 
//     public void setValue(Object value) {
//         this.value = value;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
// 
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         GlitrMetaDefinition that = (GlitrMetaDefinition) o;
// 
//         return new EqualsBuilder()
//                 .append(name, that.name)
//                 .isEquals();
//     }
// 
//     @Override
//     public int hashCode() {
//         return new HashCodeBuilder(17, 37)
//                 .append(name)
//                 .toHashCode();
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/registry/schema/GraphQLConnectionList.java
// public class GraphQLConnectionList extends GraphQLList {
//     public GraphQLConnectionList(GraphQLType wrappedType) {
//         super(wrappedType);
//     }
// }
// 
// Path: src/main/java/com/nfl/glitr/util/NodeUtil.java
// public static final String COMPLEXITY_IGNORE_KEY = "complexity_ignore";


// Path: src/main/java/com/nfl/glitr/relay/RelayImpl.java
import com.google.common.collect.Sets;
import com.nfl.glitr.registry.schema.GlitrFieldDefinition;
import com.nfl.glitr.registry.schema.GlitrMetaDefinition;
import com.nfl.glitr.registry.schema.GraphQLConnectionList;
import graphql.schema.GraphQLFieldDefinition;
import graphql.schema.GraphQLNonNull;
import graphql.schema.GraphQLObjectType;
import java.util.List;
import static com.nfl.glitr.util.NodeUtil.COMPLEXITY_IGNORE_KEY;
import static graphql.Scalars.*;
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
import static graphql.schema.GraphQLObjectType.newObject;

                    .description("When paginating forwards, are there more items?")
                    .build())
            .field(newFieldDefinition()
                    .name("hasPreviousPage")
                    .type(new GraphQLNonNull(GraphQLBoolean))
                    .description("When paginating backwards, are there more items?")
                    .build())
            .field(newFieldDefinition()
                    .name("startCursor")
                    .type(GraphQLString)
                    .description("When paginating backwards, the cursor to continue.")
                    .build())
            .field(newFieldDefinition()
                    .name("endCursor")
                    .type(GraphQLString)
                    .description("When paginating forwards, the cursor to continue.")
                    .build())
            .field(newFieldDefinition()
                    .name("previousPageStartCursor")
                    .type(GraphQLString)
                    .description("When paginating backwards, the cursor for the start of the previous page.")
                    .build())
            .field(newFieldDefinition()
                    .name("total")
                    .type(GraphQLBigInteger)
                    .description("Total number of elements in the connection.")
                    .build())
            .build();


    @Override