internal/*For test*/ Byte[] GenerateCodeInternal(String inputFileName, String inputFileContent)
		{
			using (var stream = new MemoryStream())
			{
				using (var writer = new IndentStreamWriter(stream, Encoding.UTF8))
				{
					using (var reader = new ContentReader(inputFileContent))
					{
						var headerProcessor = new HeaderProcessor
						{
							Namespace = this.FileNamespace,
							ClassName = inputFileName.Split('/', '\\').Last().Split('.').First(),
						};
						var headerOver = false;
						while (true)
						{
							var line = reader.ReadLine();
							if (line == null)
							{	// EOL
								break;
							}

							if (line.StartsWith("@") && !headerOver)
							{	// Processing headers.
								headerOver = !headerProcessor.Process(line);
								if (headerOver)
								{
									headerProcessor.WriteHeader(writer);
								}
							} else
							{	// End processing headers.
								if (!headerOver)
								{	// Header is just over last line.
									headerOver = true;
									headerProcessor.WriteHeader(writer);
								}
								// Read documents
								var document = new StringBuilder();
								while (ContentReader.IsDocumentLine(line))
								{
									document.AppendLine(line.TrimStart().Remove(0, 3).TrimStart());
									line = reader.ReadLine();
								}
								using (var propertyProcessor = new PropertyProcessor(line))
								{
									propertyProcessor.Default = headerProcessor.PropertyDefaultSettings;
									propertyProcessor.Document = document.ToString();
									propertyProcessor.Process();
									propertyProcessor.WriteProperty(writer);
								}
							}	// End header detection.
						}	// End loop.
					}	// End ContentgReader.
					writer.Flush();
				}	// End IndentStreamWriter.
				stream.Flush();
				return stream.ToArray();
			}
		}