def create_file_layout(path, layout)
      FileUtils.mkdir_p(path)
      result = []
      layout.each do |elem|
        if elem.is_a?(Hash)
          elem.each do |k, v|
            full_path = File.join(path, k)
            FileUtils.mkdir_p(full_path)
            result += create_file_layout(full_path, v)
          end
        elsif elem.is_a?(FileContent)
          fullpath = ::File.join(path, elem.name)
          File.open(fullpath, 'w') { |f| f.write elem.content }
          result << fullpath
        else
          fullpath = ::File.join(path, elem.to_s)
          File.open(fullpath, 'w') { |f| f.puts elem.to_s }
          result << fullpath
        end
      end
      result
    end
def create_file_layout(path, layout)
      FileUtils.mkdir_p(path)
      result = []
      layout.each do |elem|
        if elem.is_a?(Hash)
          elem.each do |k, v|
            full_path = File.join(path, k)
            FileUtils.mkdir_p(full_path)
            result += create_file_layout(full_path, v)
          end
        elsif elem.is_a?(FileContent)
          fullpath = ::File.join(path, elem.name)
          File.open(fullpath, 'w') { |f| f.write elem.content }
          result << fullpath
        else
          fullpath = ::File.join(path, elem.to_s)
          File.open(fullpath, 'w') { |f| f.puts elem.to_s }
          result << fullpath
        end
      end
      result
    end
Create file layout from given array
 Strings in array correspond to files while Hashes correspond to folders
 File content is equal to filename

 === Parameters
 @param [String] path where layout should be created
 @param [Array] layout to be created

 === Return
 @return [Array] list of created file paths