 b = _symbols[offset + 5];
					
    	return new Pos(a, b);
				}
			},
			new Action() {	// [117] concrete_method = METHOD.a override_flag private_flag.p label.id COLON poly_type EQUAL.e seq_expr.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol p = _symbols[offset + 3];
					final Symbol id = _symbols[offset + 4];
					final Symbol e = _symbols[offset + 7];
					final Symbol b = _symbols[offset + 8];
					
    	addHint(IndentHint.Type.DEF, e.getEnd() + 1, b.getEnd());
    	return new Pos(a, b);
				}
			},
			new Action() {	// [118] class_type = class_signature.s
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol s = _symbols[offset + 1];
					 return s;
				}
			},
			new Action() {	// [119] class_type = QUESTION.a LIDENT COLON simple_core_type_or_tuple MINUSGREATER class_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 6];
					
  		return new Pos(a, b);
				}
			},
			new Action() {	// [120] class_type = OPTLABEL.a simple_core_type_or_tuple MINUSGREATER class_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 4];
					
  		return new Pos(a, b);
				}
			},
			new Action() {	// [121] class_type = LIDENT.a COLON simple_core_type_or_tuple MINUSGREATER class_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 5];
					
  		return new Pos(a, b);
				}
			},
			new Action() {	// [122] class_type = simple_core_type_or_tuple.a MINUSGREATER class_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 3];
					
  		return new Pos(a, b);
				}
			},
			new Action() {	// [123] class_signature = LBRACKET.a core_type_comma_list RBRACKET clty_longident.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 4];
					
  		return new Pos(a, b);
				}
			},
			new Action() {	// [124] class_signature = clty_longident.a
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					 return a;
				}
			},
			new Action() {	// [125] class_signature = OBJECT.a class_sig_body.c END.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol c = _symbols[offset + 2];
					final Symbol b = _symbols[offset + 3];
					
		addHint(IndentHint.Type.OBJECT, a.getEnd() + 1, b.getStart());
    	return new Pos(a, b);
				}
			},
			new Action() {	// [126] class_sig_body = class_self_type.a class_sig_fields.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 2];
					
     	if(a!= Pos.NONE && b!= Pos.NONE)
    		return new Pos(a, b);
    	else if(a!= Pos.NONE && b == Pos.NONE)
    		return a;
    	else if(a == Pos.NONE && b!= Pos.NONE)
    		return b;
    	else
    		return Pos.NONE;
				}
			},
			new Action() {	// [127] class_self_type = LPAREN.a core_type RPAREN.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 3];
					
    	return new Pos(a, b);
				}
			},
			new Action() {	// [128] class_self_type = 
				public Symbol reduce(Symbol[] _symbols, int offset) {
					 return Pos.NONE;
				}
			},
			new Action() {	// [129] class_sig_fields = 
				public Symbol reduce(Symbol[] _symbols, int offset) {
					 return Pos.NONE;
				}
			},
			new Action() {	// [130] class_sig_fields = class_sig_fields.a INHERIT.c class_signature.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol c = _symbols[offset + 2];
					final Symbol b = _symbols[offset + 3];
					
     	if(a!= Pos.NONE && b!= Pos.NONE)
    		return new Pos(a, b);
    	else if(a!= Pos.NONE && b == Pos.NONE)
    		return new Pos(a, c);
    	else if(a == Pos.NONE && b!= Pos.NONE)
    		return new Pos(c, b);
    	else
    		return new Pos(c);
				}
			},
			new Action() {	// [131] class_sig_fields = class_sig_fields.a VAL.c value_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol c = _symbols[offset + 2];
					final Symbol b = _symbols[offset + 3];
					
     	if(a!= Pos.NONE)
    		return new Pos(a, b);
    	else
    		return new Pos(c, b);
				}
			},
			new Action() {	// [132] class_sig_fields = class_sig_fields.a virtual_method_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 2];
					
     	if(a!= Pos.NONE)
    		return new Pos(a, b);
    	else
    		return b;
				}
			},
			new Action() {	// [133] class_sig_fields = class_sig_fields.a method_type.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol b = _symbols[offset + 2];
					
     	if(a!= Pos.NONE)
    		return new Pos(a, b);
    	else
    		return b;
				}
			},
			new Action() {	// [134] class_sig_fields = class_sig_fields.a CONSTRAINT.c constrain.b
				public Symbol reduce(Symbol[] _symbols, int offset) {
					final Symbol a = _symbols[offset + 1];
					final Symbol c = _symbols[offset + 2];
					final Symbol b = _symbols[offset + 3];
					
     	if(a!= Pos.NONE)
    		return new Pos(a, b);
    	else
    		return new Pos(c, b);
				}
			},
			new Action() {	// [135] value_type = VIRTUAL.a mutable_