}
private static FileDeclarationSql _processFile(String path, String sql) throws IOException {
LineReader lr = new LineReader(new StringReader(sql));
String line;
ImmutableList.Builder<ReferenceSql> references = ImmutableList.builder();
ImmutableMap.Builder<String,HashDeclarationSql> hashes = ImmutableMap.builder();
ImmutableList.Builder<ReferenceSql> hashReferences = ImmutableList.builder();
Map<String, HashDeclarationSql> nameToHash = newHashMap();
ImmutableList.Builder<String> referenceContent = ImmutableList.builder();
ImmutableList.Builder<String> hashContent = ImmutableList.builder();
ImmutableList.Builder<String> fileContent = ImmutableList.builder();
boolean first = true;
PSTATE state = PSTATE.OTHER;
PSTATE previousState = PSTATE.OTHER;
String currentHash = null;
String currentReference = null;
Map<String,List<String>> currentReferenceParameters = ImmutableMap.of();
int hashStartIndex = 0;
int referenceStartIndex = 0;
int lineIndex = 0;
String PE = "For path: '{}', ";
while ( (line = lr.readLine()) != null) {
if (first) first = false;
Matcher m = tokenPattern.matcher(line);
String tag;
if (m.matches() && (tag = m.group(1)) != null && ! (tag = tag.trim()).isEmpty()) {
if (tag != null && tag.startsWith("#")) {