diff --git a/lib/delphi/test/TestClient.pas b/lib/delphi/test/TestClient.pas
index cbd825e..dc39828 100644
--- a/lib/delphi/test/TestClient.pas
+++ b/lib/delphi/test/TestClient.pas
@@ -825,7 +825,7 @@
 
     Expect( crazy.Xtructs.Count = 2, 'crazy.Xtructs.Count = '+IntToStr(crazy.Xtructs.Count));
     goodbye := crazy.Xtructs[0];  // lists are ordered, so we are allowed to assume this order
-	  hello   := crazy.Xtructs[1];
+      hello   := crazy.Xtructs[1];
 
     Expect( goodbye.String_thing = 'Goodbye4', 'goodbye.String_thing = "'+goodbye.String_thing+'"');
     Expect( goodbye.Byte_thing = 4, 'goodbye.Byte_thing = '+IntToStr(goodbye.Byte_thing));
@@ -878,10 +878,10 @@
     Expect( i.String_thing = 'run out of beer', 'i.String_thing = "' +i.String_thing+ '"');
     Expect( i.__isset_String_thing, 'i.__isset_String_thing = '+BoolToString(i.__isset_String_thing));
     { this is not necessarily true, these fields are default-serialized
-	Expect( not i.__isset_Byte_thing, 'i.__isset_Byte_thing = '+BoolToString(i.__isset_Byte_thing));
+    Expect( not i.__isset_Byte_thing, 'i.__isset_Byte_thing = '+BoolToString(i.__isset_Byte_thing));
     Expect( not i.__isset_I32_thing, 'i.__isset_I32_thing = '+BoolToString(i.__isset_I32_thing));
     Expect( not i.__isset_I64_thing, 'i.__isset_I64_thing = '+BoolToString(i.__isset_I64_thing));
-	}
+    }
   except
     on e:Exception do Expect( FALSE, 'Unexpected exception "'+e.ClassName+'"');
   end;
@@ -915,7 +915,7 @@
       Expect( not x.Struct_thing.__isset_Byte_thing, 'x.Struct_thing.__isset_Byte_thing = '+BoolToString(x.Struct_thing.__isset_Byte_thing));
       Expect( not x.Struct_thing.__isset_I32_thing, 'x.Struct_thing.__isset_I32_thing = '+BoolToString(x.Struct_thing.__isset_I32_thing));
       Expect( not x.Struct_thing.__isset_I64_thing, 'x.Struct_thing.__isset_I64_thing = '+BoolToString(x.Struct_thing.__isset_I64_thing));
-	  }
+      }
     end;
     on e:Exception do Expect( FALSE, 'Unexpected exception "'+e.ClassName+'"');
   end;
diff --git a/lib/delphi/test/TestServer.pas b/lib/delphi/test/TestServer.pas
index 286047d..35f1ac8 100644
--- a/lib/delphi/test/TestServer.pas
+++ b/lib/delphi/test/TestServer.pas
@@ -316,7 +316,7 @@
   Console.WriteLine('testMultiException(' + arg0 + ', ' + arg1 + ')');
   if ( arg0 = 'Xception') then
   begin
-    raise TXception.Create( 1001, 'This is an Xception');  // test the new rich CTOR 
+    raise TXception.Create( 1001, 'This is an Xception');  // test the new rich CTOR
   end else
   if ( arg0 = 'Xception2') then
   begin
@@ -473,8 +473,8 @@
 //This is a simple example and does not include elevation or other
 //advanced features.
 var pi : PROCESS_INFORMATION;
-		si : STARTUPINFO;
-		sArg, sHandles, sCmdLine : string;
+        si : STARTUPINFO;
+        sArg, sHandles, sCmdLine : string;
     i : Integer;
 begin
   GetStartupInfo( si);  //set startupinfo for the spawned process
@@ -505,7 +505,7 @@
   Win32Check( CreateProcess( nil, PChar(sCmdLine), nil,nil,TRUE,0,nil,nil,si,pi));
 
   CloseHandle( pi.hThread);
-	CloseHandle( pi.hProcess);
+    CloseHandle( pi.hProcess);
 end;
 
 
diff --git a/lib/delphi/test/TestServerEvents.pas b/lib/delphi/test/TestServerEvents.pas
index 8e931c4..2e776d2 100644
--- a/lib/delphi/test/TestServerEvents.pas
+++ b/lib/delphi/test/TestServerEvents.pas
@@ -47,128 +47,128 @@
 
 
   TProcessorEventsImpl = class( TInterfacedObject, IProcessorEvents)
-  protected
-    FReqs : Integer;
-    // IProcessorEvents
-    procedure Processing( const transport : ITransport);
+  protected
+    FReqs : Integer;
+    // IProcessorEvents
+    procedure Processing( const transport : ITransport);
     function  CreateRequestContext( const aFunctionName : string) : IRequestEvents;
     procedure CleanupContext;
   public
     constructor Create;
-  end;
+  end;
 
 
   TServerEventsImpl = class( TInterfacedObject, IServerEvents)
-  protected
-    // IServerEvents
-    procedure PreServe;
-    procedure PreAccept;
-    function  CreateProcessingContext( const input, output : IProtocol) : IProcessorEvents;
-  end;
+  protected
+    // IServerEvents
+    procedure PreServe;
+    procedure PreAccept;
+    function  CreateProcessingContext( const input, output : IProtocol) : IProcessorEvents;
+  end;
 
 
 implementation
 
 { TServerEventsImpl }
-
+
 procedure TServerEventsImpl.PreServe;
-begin
-  Console.WriteLine('ServerEvents: Server starting to serve requests');
-end;
-
-
+begin
+  Console.WriteLine('ServerEvents: Server starting to serve requests');
+end;
+
+
 procedure TServerEventsImpl.PreAccept;
-begin
-  Console.WriteLine('ServerEvents: Server transport is ready to accept incoming calls');
-end;
-
-
+begin
+  Console.WriteLine('ServerEvents: Server transport is ready to accept incoming calls');
+end;
+
+
 function TServerEventsImpl.CreateProcessingContext(const input, output: IProtocol): IProcessorEvents;
-begin
-  result := TProcessorEventsImpl.Create;
-end;
-
-
+begin
+  result := TProcessorEventsImpl.Create;
+end;
+
+
 { TProcessorEventsImpl }
-
+
 constructor TProcessorEventsImpl.Create;
-begin
-  inherited Create;
-  FReqs := 0;
-  Console.WriteLine('ProcessorEvents: Client connected, processing begins');
-end;
-
-procedure TProcessorEventsImpl.Processing(const transport: ITransport);
-begin
-  Console.WriteLine('ProcessorEvents: Processing of incoming request begins');
-end;
-
-
-function TProcessorEventsImpl.CreateRequestContext( const aFunctionName: string): IRequestEvents;
-begin
-  result := TRequestEventsImpl.Create;
-  Inc( FReqs);
-end;
-
-
-procedure TProcessorEventsImpl.CleanupContext;
-begin
-  Console.WriteLine( 'ProcessorEvents: completed after handling '+IntToStr(FReqs)+' requests.');
-end;
-
-
-{ TRequestEventsImpl }
-
+begin
+  inherited Create;
+  FReqs := 0;
+  Console.WriteLine('ProcessorEvents: Client connected, processing begins');
+end;
+
+procedure TProcessorEventsImpl.Processing(const transport: ITransport);
+begin
+  Console.WriteLine('ProcessorEvents: Processing of incoming request begins');
+end;
+
+
+function TProcessorEventsImpl.CreateRequestContext( const aFunctionName: string): IRequestEvents;
+begin
+  result := TRequestEventsImpl.Create;
+  Inc( FReqs);
+end;
+
+
+procedure TProcessorEventsImpl.CleanupContext;
+begin
+  Console.WriteLine( 'ProcessorEvents: completed after handling '+IntToStr(FReqs)+' requests.');
+end;
+
+
+{ TRequestEventsImpl }
+
 
 constructor TRequestEventsImpl.Create;
-begin
-  inherited Create;
-  FStart := Now;
-  Console.WriteLine('RequestEvents: New request');
-end;
-
-
+begin
+  inherited Create;
+  FStart := Now;
+  Console.WriteLine('RequestEvents: New request');
+end;
+
+
 procedure TRequestEventsImpl.PreRead;
-begin
-  Console.WriteLine('RequestEvents: Reading request message ...');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Reading request message ...');
+end;
+
 
 procedure TRequestEventsImpl.PostRead;
-begin
-  Console.WriteLine('RequestEvents: Reading request message completed');
-end;
+begin
+  Console.WriteLine('RequestEvents: Reading request message completed');
+end;
 
 procedure TRequestEventsImpl.PreWrite;
-begin
-  Console.WriteLine('RequestEvents: Writing response message ...');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Writing response message ...');
+end;
+
 
 procedure TRequestEventsImpl.PostWrite;
-begin
-  Console.WriteLine('RequestEvents: Writing response message completed');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Writing response message completed');
+end;
+
 
 procedure TRequestEventsImpl.OnewayComplete;
-begin
-  Console.WriteLine('RequestEvents: Oneway message processed');
-end;
-
+begin
+  Console.WriteLine('RequestEvents: Oneway message processed');
+end;
+
 
 procedure TRequestEventsImpl.UnhandledError(const e: Exception);
-begin
-  Console.WriteLine('RequestEvents: Unhandled exception of type '+e.classname);
-end;
-
-
-procedure TRequestEventsImpl.CleanupContext;
-var millis : Double;
-begin
-  millis := (Now - FStart) * (24*60*60*1000);
-  Console.WriteLine( 'Request processing completed in '+IntToStr(Round(millis))+' ms');
-end;
-
-
+begin
+  Console.WriteLine('RequestEvents: Unhandled exception of type '+e.classname);
+end;
+
+
+procedure TRequestEventsImpl.CleanupContext;
+var millis : Double;
+begin
+  millis := (Now - FStart) * (24*60*60*1000);
+  Console.WriteLine( 'Request processing completed in '+IntToStr(Round(millis))+' ms');
+end;
+
+
 end.
diff --git a/lib/delphi/test/codegen/README.md b/lib/delphi/test/codegen/README.md
index d1447a1..a014589 100644
--- a/lib/delphi/test/codegen/README.md
+++ b/lib/delphi/test/codegen/README.md
@@ -1,17 +1,17 @@
 How to use the test case:
 ----------------------------------------------
-- copy and the template batch file 
+- copy and the template batch file
 - open the batch file and adjust configuration as necessary
 - run the batch
 
 
 Configuration:
 ----------------------------------------------
-SVNWORKDIR 
+SVNWORKDIR
 should point to the Thrift working copy root
 
-MY_THRIFT_FILES 
-can be set to point to a folder with more thrift IDL files. 
+MY_THRIFT_FILES
+can be set to point to a folder with more thrift IDL files.
 If you don't have any such files, just leave the setting blank.
 
 BIN
diff --git a/lib/delphi/test/codegen/ReservedKeywords.thrift b/lib/delphi/test/codegen/ReservedKeywords.thrift
index 83c1836..300adf9 100644
--- a/lib/delphi/test/codegen/ReservedKeywords.thrift
+++ b/lib/delphi/test/codegen/ReservedKeywords.thrift
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-// make sure generated code does not produce name collisions with predefined keywords 
+// make sure generated code does not produce name collisions with predefined keywords
 
 
 
diff --git a/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.bat.tmpl b/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.bat.tmpl
index f1b56a3..4398545 100644
--- a/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.bat.tmpl
+++ b/lib/delphi/test/codegen/run-Pascal-Codegen-Tests.bat.tmpl
@@ -62,7 +62,7 @@
 rem * create and/or empty target dirs
 if not exist "%TARGET%"           md "%TARGET%"
 if not exist "%TARGET%\%SUBDIR%"  md "%TARGET%\%SUBDIR%"
-if not exist "%OUTDCU%" 	      md "%OUTDCU%"
+if not exist "%OUTDCU%"           md "%OUTDCU%"
 if exist "%TARGET%\*.thrift"      del "%TARGET%\*.thrift"       /Q
 if exist "%TARGET%\%SUBDIR%\*.*"  del "%TARGET%\%SUBDIR%\*.*"   /Q
 if exist "%OUTDCU%\*.*"           del "%OUTDCU%\*.*"            /Q
@@ -88,31 +88,31 @@
 rem * generate a minimal DPR file that uses all generated pascal units
 cd "%TARGET%\%SUBDIR%\"
 if exist inherited.*  ren inherited.*  _inherited.*
-echo program %TESTAPP%;    					> %TESTAPP%.dpr
-echo {$APPTYPE CONSOLE}   					>> %TESTAPP%.dpr
-echo.    									>> %TESTAPP%.dpr
-echo uses 									>> %TESTAPP%.dpr
-for %%a in (*.pas) do echo   %%~na,			>> %TESTAPP%.dpr
-echo   Windows, Classes, SysUtils;			>> %TESTAPP%.dpr
-echo.    									>> %TESTAPP%.dpr
-echo begin 									>> %TESTAPP%.dpr
-echo   Writeln('Successfully compiled!');	>> %TESTAPP%.dpr
-echo   Writeln('List of units:');	>> %TESTAPP%.dpr
-for %%a in (*.pas) do echo   Write('%%~na':30,'':10);  >> %TESTAPP%.dpr
-echo   Writeln;	>> %TESTAPP%.dpr
-echo end. 									>> %TESTAPP%.dpr
-echo.    									>> %TESTAPP%.dpr
+echo program %TESTAPP%;                                           > %TESTAPP%.dpr
+echo {$APPTYPE CONSOLE}                                          >> %TESTAPP%.dpr
+echo.                                                            >> %TESTAPP%.dpr
+echo uses                                                        >> %TESTAPP%.dpr
+for %%a in (*.pas) do echo   %%~na,                              >> %TESTAPP%.dpr
+echo   Windows, Classes, SysUtils;                               >> %TESTAPP%.dpr
+echo.                                                            >> %TESTAPP%.dpr
+echo begin                                                       >> %TESTAPP%.dpr
+echo   Writeln('Successfully compiled!');                        >> %TESTAPP%.dpr
+echo   Writeln('List of units:');                                >> %TESTAPP%.dpr
+for %%a in (*.pas) do echo   Write('%%~na':30,'':10);            >> %TESTAPP%.dpr
+echo   Writeln;                                                  >> %TESTAPP%.dpr
+echo end.                                                        >> %TESTAPP%.dpr
+echo.                                                            >> %TESTAPP%.dpr
 cd ..\..
 
 rem * try to compile the DPR
 rem * this should not throw any errors, warnings or hints
-"%DCC%"  -B "%TARGET%\%SUBDIR%\%TESTAPP%" -U"%UNITSEARCH%" -I"%UNITSEARCH%" -N"%OUTDCU%" -E"%TARGET%\%SUBDIR%" 
+"%DCC%"  -B "%TARGET%\%SUBDIR%\%TESTAPP%" -U"%UNITSEARCH%" -I"%UNITSEARCH%" -N"%OUTDCU%" -E"%TARGET%\%SUBDIR%"
 dir "%TARGET%\%SUBDIR%\%TESTAPP%.exe"
 if not exist "%TARGET%\%SUBDIR%\%TESTAPP%.exe"  goto CODEGEN_FAILED
 echo.
 echo -----------------------------------------------------------------
 echo The compiled program is now executed. If it hangs or crashes, we
-echo have a serious problem with the generated code. Expected output 
+echo have a serious problem with the generated code. Expected output
 echo is "Successfully compiled:" followed by a list of generated units.
 echo -----------------------------------------------------------------
 "%TARGET%\%SUBDIR%\%TESTAPP%.exe"
@@ -124,7 +124,7 @@
 REM -----------------------------------------------------
 :DXE_NOT_FOUND
 REM -----------------------------------------------------
-echo Delphi Compiler (dcc32.exe) not found. 
+echo Delphi Compiler (dcc32.exe) not found.
 echo Please check the "DCC" setting in this batch.
 echo.
 cmd /c start notepad README.MD
diff --git a/lib/delphi/test/multiplexed/Multiplex.Client.Main.pas b/lib/delphi/test/multiplexed/Multiplex.Client.Main.pas
index a1af40b..34ee081 100644
--- a/lib/delphi/test/multiplexed/Multiplex.Client.Main.pas
+++ b/lib/delphi/test/multiplexed/Multiplex.Client.Main.pas
@@ -57,8 +57,8 @@
 
 type
   IServiceClient = interface
-    ['{7745C1C2-AB20-43BA-B6F0-08BF92DE0BAC}']
-    procedure Test;
+    ['{7745C1C2-AB20-43BA-B6F0-08BF92DE0BAC}']
+    procedure Test;
   end;
 
 //--- TTestClient -------------------------------------
@@ -70,15 +70,15 @@
   client := TTestClient.Create(args);
   try
     client.Run;
-  finally
-    client.Free;
+  finally
+    client.Free;
   end;
 end;
 
 
 constructor TTestClient.Create( const args: array of string);
 begin
-  inherited;  
+  inherited;
   ParseArgs(args);
   Setup;
 end;
@@ -121,8 +121,8 @@
     do Write(IntToStr(i)+' ');
     WriteLn;
   except
-    on e:Exception do Writeln(#10+e.Message);
-  end;
+    on e:Exception do Writeln(#10+e.Message);
+  end;
 end;
 
 
diff --git a/lib/delphi/test/multiplexed/Multiplex.Server.Main.pas b/lib/delphi/test/multiplexed/Multiplex.Server.Main.pas
index 4f5cd13..37f84bb 100644
--- a/lib/delphi/test/multiplexed/Multiplex.Server.Main.pas
+++ b/lib/delphi/test/multiplexed/Multiplex.Server.Main.pas
@@ -72,20 +72,20 @@
     TAggrImpl = class( TTestHandlerImpl, TAggr.Iface)
     protected
       FList : IThriftList<Integer>;
-    
+
       // TAggr.Iface
       procedure addValue(value: Integer);
-      function getValues(): IThriftList<Integer>;
-    public
-      constructor Create;
-      destructor Destroy;  override;
-    end;
+      function getValues(): IThriftList<Integer>;
+    public
+      constructor Create;
+      destructor Destroy;  override;
+    end;
 
   public
     class procedure Execute( const args: array of string);
   end;
 
-  
+
 implementation
 
 
@@ -105,45 +105,45 @@
   prev   := 0;
   result := 1;
   while n > 0 do begin
-    next   := result + prev;
-    prev   := result;
-    result := next;
-    Dec(n);
+    next   := result + prev;
+    prev   := result;
+    result := next;
+    Dec(n);
   end;
 end;
 
 { TTestServer.TAggrImpl }
 
 constructor TTestServer.TAggrImpl.Create;
-begin
+begin
   inherited Create;
   FList := TThriftListImpl<Integer>.Create;
 end;
 
-
-destructor TTestServer.TAggrImpl.Destroy;  
+
+destructor TTestServer.TAggrImpl.Destroy;
 begin
   try
-    FreeAndNil( FList);
-  finally
-    inherited Destroy;
-  end;                  
+    FreeAndNil( FList);
+  finally
+    inherited Destroy;
+  end;
 end;
 
-
+
 procedure TTestServer.TAggrImpl.addValue(value: Integer);
 begin
   FList.Add( value);
 end;
 
-
+
 function TTestServer.TAggrImpl.getValues(): IThriftList<Integer>;
 begin
   result := FList;
 end;
 
-
-{ TTestServer }    
+
+{ TTestServer }
 
 class procedure TTestServer.Execute( const args: array of string);
 var
diff --git a/lib/delphi/test/multiplexed/Multiplex.Test.Client.dpr b/lib/delphi/test/multiplexed/Multiplex.Test.Client.dpr
index 23e296a..f7ccba1 100644
--- a/lib/delphi/test/multiplexed/Multiplex.Test.Client.dpr
+++ b/lib/delphi/test/multiplexed/Multiplex.Test.Client.dpr
@@ -23,19 +23,19 @@
 {$APPTYPE CONSOLE}
 
 uses
-  SysUtils,
-  Multiplex.Client.Main in 'Multiplex.Client.Main.pas',
-  Thrift in '..\..\src\Thrift.pas',
-  Thrift.Transport in '..\..\src\Thrift.Transport.pas',
-  Thrift.Transport.Pipes in '..\..\src\Thrift.Transport.Pipes.pas',
-  Thrift.Protocol in '..\..\src\Thrift.Protocol.pas',
-  Thrift.Protocol.Multiplex in '..\..\src\Thrift.Protocol.Multiplex.pas',
-  Thrift.Collections in '..\..\src\Thrift.Collections.pas',
-  Thrift.Server in '..\..\src\Thrift.Server.pas',
-  Thrift.Stream in '..\..\src\Thrift.Stream.pas',
-  Thrift.Console in '..\..\src\Thrift.Console.pas',
-  Thrift.Utils in '..\..\src\Thrift.Utils.pas';
-
+  SysUtils,
+  Multiplex.Client.Main in 'Multiplex.Client.Main.pas',
+  Thrift in '..\..\src\Thrift.pas',
+  Thrift.Transport in '..\..\src\Thrift.Transport.pas',
+  Thrift.Transport.Pipes in '..\..\src\Thrift.Transport.Pipes.pas',
+  Thrift.Protocol in '..\..\src\Thrift.Protocol.pas',
+  Thrift.Protocol.Multiplex in '..\..\src\Thrift.Protocol.Multiplex.pas',
+  Thrift.Collections in '..\..\src\Thrift.Collections.pas',
+  Thrift.Server in '..\..\src\Thrift.Server.pas',
+  Thrift.Stream in '..\..\src\Thrift.Stream.pas',
+  Thrift.Console in '..\..\src\Thrift.Console.pas',
+  Thrift.Utils in '..\..\src\Thrift.Utils.pas';
+
 var
   nParamCount : Integer;
   args : array of string;
diff --git a/lib/delphi/test/multiplexed/Multiplex.Test.Common.pas b/lib/delphi/test/multiplexed/Multiplex.Test.Common.pas
index 231c3ad..2caf081 100644
--- a/lib/delphi/test/multiplexed/Multiplex.Test.Common.pas
+++ b/lib/delphi/test/multiplexed/Multiplex.Test.Common.pas
@@ -1,35 +1,35 @@
-(*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *)
-
-unit Multiplex.Test.Common;
-
-interface
-
-const
-  NAME_BENCHMARKSERVICE = 'BenchmarkService';
-  NAME_AGGR             = 'Aggr';
-
-
-implementation
-
-// nix
-
-end.
-
-
+(*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *)
+
+unit Multiplex.Test.Common;
+
+interface
+
+const
+  NAME_BENCHMARKSERVICE = 'BenchmarkService';
+  NAME_AGGR             = 'Aggr';
+
+
+implementation
+
+// nix
+
+end.
+
+
diff --git a/lib/delphi/test/multiplexed/Multiplex.Test.Server.dpr b/lib/delphi/test/multiplexed/Multiplex.Test.Server.dpr
index 9da1cdc..cf03c44 100644
--- a/lib/delphi/test/multiplexed/Multiplex.Test.Server.dpr
+++ b/lib/delphi/test/multiplexed/Multiplex.Test.Server.dpr
@@ -22,20 +22,20 @@
 {$APPTYPE CONSOLE}
 
 uses
-  SysUtils,
-  Multiplex.Server.Main in 'Multiplex.Server.Main.pas',
-  Thrift in '..\..\src\Thrift.pas',
-  Thrift.Transport in '..\..\src\Thrift.Transport.pas',
-  Thrift.Transport.Pipes in '..\..\src\Thrift.Transport.Pipes.pas',
-  Thrift.Protocol in '..\..\src\Thrift.Protocol.pas',
-  Thrift.Protocol.Multiplex in '..\..\src\Thrift.Protocol.Multiplex.pas',
-  Thrift.Processor.Multiplex in '..\..\src\Thrift.Processor.Multiplex.pas',
-  Thrift.Collections in '..\..\src\Thrift.Collections.pas',
-  Thrift.Server in '..\..\src\Thrift.Server.pas',
-  Thrift.Console in '..\..\src\Thrift.Console.pas',
-  Thrift.Utils in '..\..\src\Thrift.Utils.pas',
-  Thrift.Stream in '..\..\src\Thrift.Stream.pas';
-
+  SysUtils,
+  Multiplex.Server.Main in 'Multiplex.Server.Main.pas',
+  Thrift in '..\..\src\Thrift.pas',
+  Thrift.Transport in '..\..\src\Thrift.Transport.pas',
+  Thrift.Transport.Pipes in '..\..\src\Thrift.Transport.Pipes.pas',
+  Thrift.Protocol in '..\..\src\Thrift.Protocol.pas',
+  Thrift.Protocol.Multiplex in '..\..\src\Thrift.Protocol.Multiplex.pas',
+  Thrift.Processor.Multiplex in '..\..\src\Thrift.Processor.Multiplex.pas',
+  Thrift.Collections in '..\..\src\Thrift.Collections.pas',
+  Thrift.Server in '..\..\src\Thrift.Server.pas',
+  Thrift.Console in '..\..\src\Thrift.Console.pas',
+  Thrift.Utils in '..\..\src\Thrift.Utils.pas',
+  Thrift.Stream in '..\..\src\Thrift.Stream.pas';
+
 var
   nParamCount : Integer;
   args : array of string;
diff --git a/lib/delphi/test/skip/README.md b/lib/delphi/test/skip/README.md
index 90d5ff5..9975a0b 100644
--- a/lib/delphi/test/skip/README.md
+++ b/lib/delphi/test/skip/README.md
@@ -1,11 +1,11 @@
-These two projects belong together. Both programs 
-simulate server and client for different versions 
+These two projects belong together. Both programs
+simulate server and client for different versions
 of the same protocol.
 
 The intention of this test is to ensure fully
-working compatibilty features of the Delphi Thrift 
+working compatibilty features of the Delphi Thrift
 implementation.
 
-The expected test result is, that no errors occur 
-with both programs, regardless in which order they 
+The expected test result is, that no errors occur
+with both programs, regardless in which order they
 might be started.
diff --git a/lib/delphi/test/typeregistry/TestTypeRegistry.dpr b/lib/delphi/test/typeregistry/TestTypeRegistry.dpr
index 64d5771..9a6503a 100644
--- a/lib/delphi/test/typeregistry/TestTypeRegistry.dpr
+++ b/lib/delphi/test/typeregistry/TestTypeRegistry.dpr
@@ -48,42 +48,42 @@
 begin
   instance := TypeRegistry.Construct<T>;
   name := GetTypeName(TypeInfo(T));
-  if instance <> nil
-  then Writeln( name, ' = ok')
-  else begin
-    Writeln( name, ' = failed');
-    raise Exception.Create( 'Test with '+name+' failed!');
-  end;
+  if instance <> nil
+  then Writeln( name, ' = ok')
+  else begin
+    Writeln( name, ' = failed');
+    raise Exception.Create( 'Test with '+name+' failed!');
+  end;
 end;
 
 begin
   Writeln('Testing ...');
   Tester<IDoubles>.Test;
-  Tester<IOneOfEach>.Test;
-  Tester<IBonk>.Test;
-  Tester<INesting>.Test;
-  Tester<IHolyMoley>.Test;
-  Tester<IBackwards>.Test;
-  Tester<IEmpty>.Test;
-  Tester<IWrapper>.Test;
-  Tester<IRandomStuff>.Test;
-  Tester<IBase64>.Test;
-  Tester<ICompactProtoTestStruct>.Test;
-  Tester<ISingleMapTestStruct>.Test;
-  Tester<IBlowUp>.Test;
-  Tester<IReverseOrderStruct>.Test;
-  Tester<IStructWithSomeEnum>.Test;
-  Tester<ITestUnion>.Test;
-  Tester<ITestUnionMinusStringField>.Test;
-  Tester<IComparableUnion>.Test;
-  Tester<IStructWithAUnion>.Test;
-  Tester<IPrimitiveThenStruct>.Test;
-  Tester<IStructWithASomemap>.Test;
-  Tester<IBigFieldIdStruct>.Test;
-  Tester<IBreaksRubyCompactProtocol>.Test;
-  Tester<ITupleProtocolTestStruct>.Test;
-  Writeln('Completed.');
-
-
-end.
+  Tester<IOneOfEach>.Test;
+  Tester<IBonk>.Test;
+  Tester<INesting>.Test;
+  Tester<IHolyMoley>.Test;
+  Tester<IBackwards>.Test;
+  Tester<IEmpty>.Test;
+  Tester<IWrapper>.Test;
+  Tester<IRandomStuff>.Test;
+  Tester<IBase64>.Test;
+  Tester<ICompactProtoTestStruct>.Test;
+  Tester<ISingleMapTestStruct>.Test;
+  Tester<IBlowUp>.Test;
+  Tester<IReverseOrderStruct>.Test;
+  Tester<IStructWithSomeEnum>.Test;
+  Tester<ITestUnion>.Test;
+  Tester<ITestUnionMinusStringField>.Test;
+  Tester<IComparableUnion>.Test;
+  Tester<IStructWithAUnion>.Test;
+  Tester<IPrimitiveThenStruct>.Test;
+  Tester<IStructWithASomemap>.Test;
+  Tester<IBigFieldIdStruct>.Test;
+  Tester<IBreaksRubyCompactProtocol>.Test;
+  Tester<ITupleProtocolTestStruct>.Test;
+  Writeln('Completed.');
+
+
+end.
 
