InternalSARL.g:16569:1: ruleJvmTypeParameter returns [EObject current=null] : ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? ) ;
358618
public final EObject ruleJvmTypeParameter() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_constraints_1_0 = null;

        EObject lv_constraints_2_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:16575:2: ( ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? ) )
            // InternalSARL.g:16576:2: ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? )
            {
            // InternalSARL.g:16576:2: ( ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )? )
            // InternalSARL.g:16577:3: ( (lv_name_0_0= ruleValidID ) ) ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )?
            {
            // InternalSARL.g:16577:3: ( (lv_name_0_0= ruleValidID ) )
            // InternalSARL.g:16578:4: (lv_name_0_0= ruleValidID )
            {
            // InternalSARL.g:16578:4: (lv_name_0_0= ruleValidID )
            // InternalSARL.g:16579:5: lv_name_0_0= ruleValidID
            {
            if ( state.backtracking==0 ) {

              					newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getNameValidIDParserRuleCall_0_0());
              				
            }
            pushFollow(FOLLOW_155);
            lv_name_0_0=ruleValidID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              					if (current==null) {
              						current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
              					}
              					set(
              						current,
              						"name",
              						lv_name_0_0,
              						"org.eclipse.xtend.core.Xtend.ValidID");
              					afterParserOrEnumRuleCall();
              				
            }

            }


            }

            // InternalSARL.g:16596:3: ( ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )* )?
            int alt380=2;
            int LA380_0 = input.LA(1);

            if ( (LA380_0==28) ) {
                alt380=1;
            }
            switch (alt380) {
                case 1 :
                    // InternalSARL.g:16597:4: ( (lv_constraints_1_0= ruleJvmUpperBound ) ) ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )*
                    {
                    // InternalSARL.g:16597:4: ( (lv_constraints_1_0= ruleJvmUpperBound ) )
                    // InternalSARL.g:16598:5: (lv_constraints_1_0= ruleJvmUpperBound )
                    {
                    // InternalSARL.g:16598:5: (lv_constraints_1_0= ruleJvmUpperBound )
                    // InternalSARL.g:16599:6: lv_constraints_1_0= ruleJvmUpperBound
                    {
                    if ( state.backtracking==0 ) {

                      						newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getConstraintsJvmUpperBoundParserRuleCall_1_0_0());
                      					
                    }
                    pushFollow(FOLLOW_154);
                    lv_constraints_1_0=ruleJvmUpperBound();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      						if (current==null) {
                      							current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
                      						}
                      						add(
                      							current,
                      							"constraints",
                      							lv_constraints_1_0,
                      							"org.eclipse.xtext.xbase.Xtype.JvmUpperBound");
                      						afterParserOrEnumRuleCall();
                      					
                    }

                    }


                    }

                    // InternalSARL.g:16616:4: ( (lv_constraints_2_0= ruleJvmUpperBoundAnded ) )*
                    loop379:
                    do {
                        int alt379=2;
                        int LA379_0 = input.LA(1);

                        if ( (LA379_0==144) ) {
                            alt379=1;
                        }


                        switch (alt379) {
                    	case 1 :
                    	    // InternalSARL.g:16617:5: (lv_constraints_2_0= ruleJvmUpperBoundAnded )
                    	    {
                    	    // InternalSARL.g:16617:5: (lv_constraints_2_0= ruleJvmUpperBoundAnded )
                    	    // InternalSARL.g:16618:6: lv_constraints_2_0= ruleJvmUpperBoundAnded
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      						newCompositeNode(grammarAccess.getJvmTypeParameterAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_1_1_0());
                    	      					
                    	    }
                    	    pushFollow(FOLLOW_154);
                    	    lv_constraints_2_0=ruleJvmUpperBoundAnded();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      						if (current==null) {
                    	      							current = createModelElementForParent(grammarAccess.getJvmTypeParameterRule());
                    	      						}
                    	      						add(
                    	      							current,
                    	      							"constraints",
                    	      							lv_constraints_2_0,
                    	      							"org.eclipse.xtext.xbase.Xtype.JvmUpperBoundAnded");
                    	      						afterParserOrEnumRuleCall();
                    	      					
                    	    }

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop379;
                        }
                    } while (true);


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
810774
public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJvmLowerBoundAnded = null;


        try {
            // InternalXbase.g:6061:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
            // InternalXbase.g:6062:2: iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getJvmLowerBoundAndedRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleJvmLowerBoundAnded=ruleJvmLowerBoundAnded();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleJvmLowerBoundAnded; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
994953
public final void ruleJvmLowerBound() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtype.g:271:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
            // InternalXtype.g:272:2: ( ( rule__JvmLowerBound__Group__0 ) )
            {
            // InternalXtype.g:272:2: ( ( rule__JvmLowerBound__Group__0 ) )
            // InternalXtype.g:273:3: ( rule__JvmLowerBound__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
            }
            // InternalXtype.g:274:3: ( rule__JvmLowerBound__Group__0 )
            // InternalXtype.g:274:4: rule__JvmLowerBound__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__JvmLowerBound__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
386215
public final String entryRuleOpOr() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpOr = null;


        try {
            // InternalXbase.g:425:44: (iv_ruleOpOr= ruleOpOr EOF )
            // InternalXbase.g:426:2: iv_ruleOpOr= ruleOpOr EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOpOrRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleOpOr=ruleOpOr();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOpOr.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
30531
public final void ruleJvmFormalParameter() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXbase.g:1146:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
            // InternalXbase.g:1147:2: ( ( rule__JvmFormalParameter__Group__0 ) )
            {
            // InternalXbase.g:1147:2: ( ( rule__JvmFormalParameter__Group__0 ) )
            // InternalXbase.g:1148:3: ( rule__JvmFormalParameter__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
            }
            // InternalXbase.g:1149:3: ( rule__JvmFormalParameter__Group__0 )
            // InternalXbase.g:1149:4: rule__JvmFormalParameter__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__JvmFormalParameter__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
1215611
public final EObject entryRuleTypeReferenceNoTypeArgs() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeReferenceNoTypeArgs = null;


        try {
            // InternalSARL.g:9189:64: (iv_ruleTypeReferenceNoTypeArgs= ruleTypeReferenceNoTypeArgs EOF )
            // InternalSARL.g:9190:2: iv_ruleTypeReferenceNoTypeArgs= ruleTypeReferenceNoTypeArgs EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeReferenceNoTypeArgsRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleTypeReferenceNoTypeArgs=ruleTypeReferenceNoTypeArgs();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypeReferenceNoTypeArgs; 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1075695
public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_InnerVarID_0 = null;



        	enterRule();

        try {
            // InternalSARL.g:9886:2: ( (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' ) )
            // InternalSARL.g:9887:2: (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' )
            {
            // InternalSARL.g:9887:2: (this_InnerVarID_0= ruleInnerVarID | kw= 'extension' )
            int alt256=2;
            int LA256_0 = input.LA(1);

            if ( (LA256_0==RULE_ID||LA256_0==25||LA256_0==28||LA256_0==36||LA256_0==39||(LA256_0>=42 && LA256_0<=44)||LA256_0==51||(LA256_0>=78 && LA256_0<=96)) ) {
                alt256=1;
            }
            else if ( (LA256_0==45) ) {
                alt256=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 256, 0, input);

                throw nvae;
            }
            switch (alt256) {
                case 1 :
                    // InternalSARL.g:9888:3: this_InnerVarID_0= ruleInnerVarID
                    {
                    if ( state.backtracking==0 ) {

                      			newCompositeNode(grammarAccess.getFeatureCallIDAccess().getInnerVarIDParserRuleCall_0());
                      		
                    }
                    pushFollow(FOLLOW_2);
                    this_InnerVarID_0=ruleInnerVarID();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(this_InnerVarID_0);
                      		
                    }
                    if ( state.backtracking==0 ) {

                      			afterParserOrEnumRuleCall();
                      		
                    }

                    }
                    break;
                case 2 :
                    // InternalSARL.g:9899:3: kw= 'extension'
                    {
                    kw=(Token)match(input,45,FOLLOW_2); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			current.merge(kw);
                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_1());
                      		
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {

              	leaveRule();

            }
        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
1299505
private static Expression getParam(
      LocalVariable paramsVar,
      LocalVariable ijVar,
      TemplateParam param,
      @Nullable SoyExpression defaultValue) {
    Expression fieldName = BytecodeUtils.constant(param.name());
    Expression record = param.isInjected() ? ijVar : paramsVar;
    // NOTE: for compatibility with Tofu and jssrc we do not check for missing required parameters
    // here instead they will just turn into null.  Existing templates depend on this.
    if (defaultValue == null) {
      return MethodRef.RUNTIME_GET_FIELD_PROVIDER.invoke(record, fieldName);
    } else {
      return MethodRef.RUNTIME_GET_FIELD_PROVIDER_DEFAULT.invoke(
          record, fieldName, defaultValue.box());
    }
  }
515493
public final void ruleJvmUpperBoundAnded() throws RecognitionException {

        		int stackSize = keepStackSize();
        	
        try {
            // InternalXtype.g:246:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
            // InternalXtype.g:247:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
            {
            // InternalXtype.g:247:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
            // InternalXtype.g:248:3: ( rule__JvmUpperBoundAnded__Group__0 )
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
            }
            // InternalXtype.g:249:3: ( rule__JvmUpperBoundAnded__Group__0 )
            // InternalXtype.g:249:4: rule__JvmUpperBoundAnded__Group__0
            {
            pushFollow(FOLLOW_2);
            rule__JvmUpperBoundAnded__Group__0();

            state._fsp--;
            if (state.failed) return ;

            }

            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
            }

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
333400
public final EObject ruleMethodCall() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // InternalSimpleExpressions.g:604:28: ( ( (lv_value_0_0= ruleMethodCallLiteral ) ) )
            // InternalSimpleExpressions.g:605:1: ( (lv_value_0_0= ruleMethodCallLiteral ) )
            {
            // InternalSimpleExpressions.g:605:1: ( (lv_value_0_0= ruleMethodCallLiteral ) )
            // InternalSimpleExpressions.g:606:1: (lv_value_0_0= ruleMethodCallLiteral )
            {
            // InternalSimpleExpressions.g:606:1: (lv_value_0_0= ruleMethodCallLiteral )
            // InternalSimpleExpressions.g:607:3: lv_value_0_0= ruleMethodCallLiteral
            {
             
            	        newCompositeNode(grammarAccess.getMethodCallAccess().getValueMethodCallLiteralParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_2);
            lv_value_0_0=ruleMethodCallLiteral();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMethodCallRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_0_0, 
                    		"org.eclipse.xtext.xtext.generator.parser.antlr.splitting.SimpleExpressions.MethodCallLiteral");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
870855
public final String entryRuleFeatureCallID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;


        try {
            // InternalSARL.g:9873:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
            // InternalSARL.g:9874:2: iv_ruleFeatureCallID= ruleFeatureCallID EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getFeatureCallIDRule()); 
            }
            pushFollow(FOLLOW_1);
            iv_ruleFeatureCallID=ruleFeatureCallID();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleFeatureCallID.getText(); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return current;

            }

        }

            catch (RecognitionException re) {
                recover(input,re);
                appendSkippedTokens();
            }
        finally {
        }
        return current;
    }
590167
public final EObject ruleNumberLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;

         enterRule(); 
            
        try {
            // InternalSimpleExpressions.g:480:28: ( ( (lv_value_0_0= RULE_INT ) ) )
            // InternalSimpleExpressions.g:481:1: ( (lv_value_0_0= RULE_INT ) )
            {
            // InternalSimpleExpressions.g:481:1: ( (lv_value_0_0= RULE_INT ) )
            // InternalSimpleExpressions.g:482:1: (lv_value_0_0= RULE_INT )
            {
            // InternalSimpleExpressions.g:482:1: (lv_value_0_0= RULE_INT )
            // InternalSimpleExpressions.g:483:3: lv_value_0_0= RULE_INT
            {
            lv_value_0_0=(Token)match(input,RULE_INT,FOLLOW_2); 

            			newLeafNode(lv_value_0_0, grammarAccess.getNumberLiteralAccess().getValueINTTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNumberLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_0_0, 
                    		"org.eclipse.xtext.common.Terminals.INT");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
539957
public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
        try {
            // InternalXtype.g:134:1: ( ruleJvmParameterizedTypeReference EOF )
            // InternalXtype.g:135:1: ruleJvmParameterizedTypeReference EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleJvmParameterizedTypeReference();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmParameterizedTypeReferenceRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
911081
public final void entryRuleJvmUpperBound() throws RecognitionException {
        try {
            // InternalXtype.g:209:1: ( ruleJvmUpperBound EOF )
            // InternalXtype.g:210:1: ruleJvmUpperBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmUpperBoundRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleJvmUpperBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmUpperBoundRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
1369603
protected String getTypeParameterAsString(JvmTypeParameter typeParameter) {
		StringBuilder b = new StringBuilder();
		b.append(typeParameter.getName());
		ITypeReferenceOwner referenceOwner = getState().getReferenceOwner();
		if(!typeParameter.getConstraints().isEmpty()) {
			boolean firstUpperBound = true;
			for(int j=0; j<typeParameter.getConstraints().size(); ++j) {
				JvmTypeConstraint constraint = typeParameter.getConstraints().get(j);
				LightweightTypeReference typeRef = referenceOwner.toLightweightTypeReference(constraint.getTypeReference());
				if(constraint instanceof JvmUpperBound) {
					if(typeRef.isType(Object.class))
						continue;
					if (firstUpperBound) {
						b.append(" extends ");
						firstUpperBound = false;
					} else {
						b.append(" & ");
					}
				} else 
					b.append(" super ");
				b.append(typeRef.getHumanReadableName());
			}
		}
		return b.toString();
	}
760504
public final void entryRuleJvmLowerBound() throws RecognitionException {
        try {
            // InternalXbaseWithAnnotations.g:1917:1: ( ruleJvmLowerBound EOF )
            // InternalXbaseWithAnnotations.g:1918:1: ruleJvmLowerBound EOF
            {
            if ( state.backtracking==0 ) {
               before(grammarAccess.getJvmLowerBoundRule()); 
            }
            pushFollow(FOLLOW_1);
            ruleJvmLowerBound();

            state._fsp--;
            if (state.failed) return ;
            if ( state.backtracking==0 ) {
               after(grammarAccess.getJvmLowerBoundRule()); 
            }
            match(input,EOF,FOLLOW_2); if (state.failed) return ;

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
1071906
public String getParamType() {
		int firstColon = myValue.indexOf(':');
		if (firstColon == -1 || firstColon == myValue.length() - 1) {
			return null;
		}
		return myValue.substring(0, firstColon);
	}