public ArrayList<String> replaceObjects( ArrayList<String> tokenizedInput,
			LanguageKeywords language ) {

		// Acquire a temporary copy of the tokenized input to be filled with the new tokenize input
		ArrayList<String> tempTokenizedInput = new ArrayList<String>();

		// Acquire an iterator for the tokenized input
		ListIterator<String> iter = tokenizedInput.listIterator();

		// Loop for as long as there is more tokens
		while( iter.hasNext() ) {

			String token = iter.next();
			StringBuffer object = new StringBuffer();

			// Check if the token matches a valid object name, and is not a keyword or delimiter
			if( Pattern.matches( "[_a-zA-Z][0-9a-zA-Z_]*", token ) && !language.isKeyword( token )
					&& !language.isDelimiter( token ) ) {

				object.append( token );
				token = iter.next();
				boolean done = false; // Needed in the situation where multiple calls can happen
				// TODO Maybe take this farther to handle stuff like: obj.call1().call2( obj1).call3() = :o0

				// Keep looping till the ending of this object is reached
				while( !done ) {

					// Check to see if the token is method call delimiter
					if( language.isMethodCall( token ) ) {

						String methodCall = token; // Keep the method call token stored
						token = iter.next();

						// Check if the token matches an object name and is not a keyword or delimiter
						if( Pattern.matches( "[_a-zA-Z][0-9a-zA-Z_]*", token )
								&& !language.isKeyword( token ) && !language.isDelimiter( token ) ) {

							// Append the method call and token to the object; get the next token
							object.append( methodCall + token );
							token = iter.next();
						}
						else { // No match on the token to an object	

							// No more objects; go back a token and replace object with an identifier
							done = true;
							iter.previous();
							tempTokenizedInput.add( _objects.addValue( object.toString() ) );
						}
					}
					else { // Token didn't match method call delimiter

						// No more objects; go back a token and replace object with an identifier
						done = true;
						iter.previous();
						tempTokenizedInput.add( _objects.addValue( object.toString() ) );
					}
				}
			}
			else { // No match on an object

				// Add the token to the tokenized input
				tempTokenizedInput.add( token );
			}
		}

		// Replace the tokenized input with the temporary tokenized input (has the replacements)
		tokenizedInput = tempTokenizedInput;
		return tokenizedInput;
	}