private void processLine(String line, int lineNumber) {
		if (line.startsWith("//") || line.trim().length() == 0) return;
		DeconstructedStringScroller sd = new DeconstructedStringScroller(line, " ");
		if (type == null) {
			if (sd.next().toLowerCase().equals("class")) try {
				String className = sd.next();
				type = Class.forName(className);
				if (sd.hasNext())
					throw new RuntimeException("Trailing content at line " + lineNumber + ": " + line);
				return;
			} catch (ClassNotFoundException e) {
				throw new RuntimeException("Unable to parse line " + lineNumber + ": " + line, e);
			}
		} else {
			String action = sd.next();
			for(String key: actions.keySet()) {
				if (key.equals(action)) {
					line = line.substring(key.length() + 1);
					String fieldName = sd.next();
					FieldSpec fieldSpec = newInstance(actions.get(key), fieldName);
					currentVersion().addFieldSpec(fieldSpec); //w00!
					if (!sd.hasNext())
						return;

					//more here...
					
					
				}
			}
			
		}
		throw new RuntimeException("Unable to parse line " + lineNumber + ": " + line);
	}