private void parseAccessorDeclaration(IAccessorsOwner declaration, bool inInterface) {
            var accessor = new AccessorDeclarationNode();
            while (lexicalUnit == LexicalUnit.OpenBracket) {
                accessor.Annotations.add(parseAnnotationSection());
            }
            setScannerState(accessor);
            switch (lexicalUnit) {
            case Keyword:
                switch (scanner.Keyword) {
                case Protected:
                    accessor.Modifiers.add(Modifier.Protected);
					nextLexicalUnit(true);
                    break;

                case Private:
                    accessor.Modifiers.add(Modifier.Private);
					nextLexicalUnit(true);
                    break;
                }
                break;
            }
            switch (lexicalUnit) {
            case ContextualKeyword:
                switch (scanner.Keyword) {
                case Get:
                    if (declaration.GetAccessor != null) {
                        throw error(ParseErrorId.DuplicateAccessor);
                    }
                    declaration.GetAccessor = accessor;
                    nextLexicalUnit(true);
                    break;

                case Set:
                    if (declaration.SetAccessor != null) {
                        throw error(ParseErrorId.DuplicateAccessor);
                    }
                    declaration.SetAccessor = accessor;
                    nextLexicalUnit(true);
                    break;

                default:
                    throw error(ParseErrorId.AccessorExpected);
                }
                break;

            default:
                throw error(ParseErrorId.AccessorExpected);
            }
            switch (lexicalUnit) {
            case SemiColon:
				accessor.EndPosition = scanner.EndPosition;
                nextLexicalUnit(false);
                break;

            case OpenBrace:
                if (!inInterface) {
                    accessor.Body = parseBlockStatement();
					accessor.EndPosition = accessor.Body.EndPosition;
                    break;
                }
                goto default;

            default:
                throw error(ParseErrorId.SemiColonExpected);
            }
        }
	    private void fakeParseShortProperty(IAccessorsOwner declaration, Modifier setterAccess, bool inInterface) {
            var accessor = new AccessorDeclarationNode();
            setScannerState(accessor);
            declaration.GetAccessor = accessor;
			accessor.EndPosition = scanner.EndPosition;
			if (!inInterface || setterAccess == Modifier.Public) {
				accessor = new AccessorDeclarationNode();
				setScannerState(accessor);
				if (declaration.Modifiers.any(x => isLess(x, setterAccess)))
					accessor.Modifiers.add(setterAccess);
				declaration.SetAccessor = accessor;
				accessor.EndPosition = scanner.EndPosition;
			}
		}