if (offsetDiff == scanner.getCurrentTokenEndPosition() - scanner.getCurrentTokenSource().length + 1)
if (scanner.getCurrentTokenStartPosition() == offset)
	private int computeOffset() throws CoreException{		int offset= fSourceReference.getSourceRange().getOffset();		try{			TextBuffer buff= TextBuffer.create(fCu.getSource());			String lineSource= buff.getLineContentOfOffset(offset);			int lineOffset= buff.getLineInformationOfOffset(offset).getOffset();			int offsetDiff= offset- lineOffset;						IScanner scanner= ToolFactory.createScanner(true, true, false, true);			scanner.setSource(lineSource.toCharArray());			scanner.resetTo(0, Integer.MAX_VALUE);						int token= scanner.getNextToken();			while (token != ITerminalSymbols.TokenNameEOF) {				switch (token) {					case ITerminalSymbols.TokenNameWHITESPACE:						break;					case ITerminalSymbols.TokenNameSEMICOLON:						break;						case ITerminalSymbols.TokenNameCOMMENT_LINE :						break;					case ITerminalSymbols.TokenNameCOMMENT_JAVADOC :						break;							case ITerminalSymbols.TokenNameCOMMENT_BLOCK :						break;								default:						if (offsetDiff == scanner.getCurrentTokenEndPosition() - scanner.getCurrentTokenSource().length + 1)							return lineOffset;						else							return offset;					}				token= scanner.getNextToken();			}			return offset;	//should never get here really		} catch (InvalidInputException e){			return offset;//fallback		}	}