 
     public func validate(file: File) -> [StyleViolation] {
         let varLines = varLetLineNumbers(file: file, structure: file.structure.dictionary.substructure)
+        let commentLines = commentLineNumbers(file: file)
         var violations = [StyleViolation]()
         let notWhitespace = CharacterSet.whitespaces.inverted
         
         for (index, line) in file.lines.enumerated() {
-            guard !varLines.contains(index) else { continue }
+            guard !varLines.contains(index) &&
+                  !commentLines.contains(index) else {
+                continue
+            }
             
             let lastRange = line.content.rangeOfCharacter(from: notWhitespace, options: [.backwards])
             let firstRange = line.content.rangeOfCharacter(from: notWhitespace)
             
             // Precedes var/let and has text not ending with {
-            if varLines.contains(index + 1) {
+            if linePrecedesVar(index, varLines, commentLines) {
                 if let last = lastRange.map({ line.content.substring(with: $0) }), last != "{" {
                     violated(&violations, file, index)
                 }
             }
             // Follows var/let and has text not starting with }
-            if varLines.contains(index - 1) {
+            if lineFollowsVar(index, varLines, commentLines) {
                 if let first = firstRange.map({ line.content.substring(with: $0) }), first != "}" {
                     violated(&violations, file, index)
                 }
             }
         }
         return violations
+    }
+    
+    func linePrecedesVar(_ lineNumber: Int, _ varLines: Set<Int>, _ commentLines: Set<Int>) -> Bool {
+        return lineNeighborsVar(lineNumber, varLines, commentLines, 1)
+    }
+    
+    func lineFollowsVar(_ lineNumber: Int, _ varLines: Set<Int>, _ commentLines: Set<Int>) -> Bool {
+        return lineNeighborsVar(lineNumber, varLines, commentLines, -1)
+    }
+    
+    func lineNeighborsVar(_ lineNumber: Int, _ varLines: Set<Int>, _ commentLines: Set<Int>, _ increment: Int) -> Bool {
+        if varLines.contains(lineNumber + increment) {
+            return true
+        }
+        
+        var prevLine = lineNumber
+        
+        while commentLines.contains(prevLine) {
+            if varLines.contains(prevLine + increment) {
+                return true
+            }
+            prevLine += increment
+        }
+        return false
     }
     
     func violated(_ violations: inout [StyleViolation], _ file: File, _ line: Int) {

        nonTriggeringExamples: [
            "let a = 0\nvar x = 1\n\nx = 2\n",
            "a = 5\n\nvar x = 1\n",
            "struct X {\n\tvar a = 0\n}\n"
        ],
        triggeringExamples: [
            "var x = 1\n↓x = 2\n",

        for index in startFrom..<lines.count {
            let line = lines[index]
            
            if line.byteRange.location + line.byteRange.length > offset {
                return index
            }
        }
