super();
this.name = name;
this.desc = desc;
// Resolve: This constructor should always be called with parameter prefetched
// set to true. Ideally, we should have an inheritance hierachy as follows
// ConstraintFieldName
// |
// ----------------------------------
// | |
// ProjectionFieldName PrefetchedFieldName
// then isPrefetched and isProjection can be turned into abstract methods
// Till we do the cleanup, parameter prefetched will just serve as a
// marker and its value will always be ignored.
assert prefetched == true;
this.prefetched = prefetched;