{"action":"created","comment":{"url":"https://api.github.com/repos/google/FreeBuilder/pulls/comments/80061164","id":80061164,"diff_hunk":"@@ -625,6 +626,18 @@ relevant file to trigger the incremental compiler. (Or run javac.)\n Alternatives\n ------------\n \n+### Immutables vs `@FreeBuilder`\n+\n+[Immutables](https://immutables.github.io/) provides many of the same features as `@FreeBuilder`, plus a whole host more. Some are optional ways to potentially enhance performance, like [derived](https://immutables.github.io/immutable.html#derived-attributes) and [lazy](https://immutables.github.io/immutable.html#lazy-attributes) attributes, [singleton](https://immutables.github.io/immutable.html#singleton-instances) and [interned](https://immutables.github.io/immutable.html#instance-interning) instances, [hash code precomputation](https://immutables.github.io/immutable.html#precomputed-hashcode). Some are API-changing: [strict builders](https://immutables.github.io/immutable.html#strict-builder) provide a compile-time guarantee that all fields are set (but limit the use of builders as a consequence), while [copy methods](https://immutables.github.io/immutable.html#copy-methods) provide a concise way to clone a value with a single field changed (but require you to reference the generated ImmutableFoo type, not Foo). It provides advanced [binary serialization](https://immutables.github.io/immutable.html#serialization) options. It does not require getters follow the JavaBean naming convention (i.e. starting with `get` or `is`), and lets you easily customize the conventional method prefixes.","path":"README.md","position":null,"original_position":14,"commit_id":"cfb13d950ec9838edb281d3e84ccca2788982d5b","original_commit_id":"508d1032d2cab9a1fd7f4f7edfce0ed5f32642bd","user":{"login":"chrisalice","id":979369,"avatar_url":"https://avatars.githubusercontent.com/u/979369?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisalice","html_url":"https://github.com/chrisalice","followers_url":"https://api.github.com/users/chrisalice/followers","following_url":"https://api.github.com/users/chrisalice/following{/other_user}","gists_url":"https://api.github.com/users/chrisalice/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisalice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisalice/subscriptions","organizations_url":"https://api.github.com/users/chrisalice/orgs","repos_url":"https://api.github.com/users/chrisalice/repos","events_url":"https://api.github.com/users/chrisalice/events{/privacy}","received_events_url":"https://api.github.com/users/chrisalice/received_events","type":"User","site_admin":false},"body":"Not yet publicly documented.","created_at":"2016-09-22T15:01:31Z","updated_at":"2016-09-22T15:01:31Z","html_url":"https://github.com/google/FreeBuilder/pull/193#discussion_r80061164","pull_request_url":"https://api.github.com/repos/google/FreeBuilder/pulls/193","_links":{"self":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/comments/80061164"},"html":{"href":"https://github.com/google/FreeBuilder/pull/193#discussion_r80061164"},"pull_request":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/193"}}},"pull_request":{"url":"https://api.github.com/repos/google/FreeBuilder/pulls/193","id":86330105,"html_url":"https://github.com/google/FreeBuilder/pull/193","diff_url":"https://github.com/google/FreeBuilder/pull/193.diff","patch_url":"https://github.com/google/FreeBuilder/pull/193.patch","issue_url":"https://api.github.com/repos/google/FreeBuilder/issues/193","number":193,"state":"open","locked":false,"title":"Compare FreeBuilder with Immutables","user":{"login":"chrisalice","id":979369,"avatar_url":"https://avatars.githubusercontent.com/u/979369?v=3","gravatar_id":"","url":"https://api.github.com/users/chrisalice","html_url":"https://github.com/chrisalice","followers_url":"https://api.github.com/users/chrisalice/followers","following_url":"https://api.github.com/users/chrisalice/following{/other_user}","gists_url":"https://api.github.com/users/chrisalice/gists{/gist_id}","starred_url":"https://api.github.com/users/chrisalice/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chrisalice/subscriptions","organizations_url":"https://api.github.com/users/chrisalice/orgs","repos_url":"https://api.github.com/users/chrisalice/repos","events_url":"https://api.github.com/users/chrisalice/events{/privacy}","received_events_url":"https://api.github.com/users/chrisalice/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-22T12:44:49Z","updated_at":"2016-09-22T15:01:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"71205f05ae1352e43daae1e5f8596700759e3aed","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/google/FreeBuilder/pulls/193/commits","review_comments_url":"https://api.github.com/repos/google/FreeBuilder/pulls/193/comments","review_comment_url":"https://api.github.com/repos/google/FreeBuilder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/google/FreeBuilder/issues/193/comments","statuses_url":"https://api.github.com/repos/google/FreeBuilder/statuses/cfb13d950ec9838edb281d3e84ccca2788982d5b","head":{"label":"google:versus-immutables","ref":"versus-immutables","sha":"cfb13d950ec9838edb281d3e84ccca2788982d5b","user":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":28824978,"name":"FreeBuilder","full_name":"google/FreeBuilder","owner":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/FreeBuilder","description":"Automatic generation of the Builder pattern for Java 1.6+","fork":false,"url":"https://api.github.com/repos/google/FreeBuilder","forks_url":"https://api.github.com/repos/google/FreeBuilder/forks","keys_url":"https://api.github.com/repos/google/FreeBuilder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/FreeBuilder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/FreeBuilder/teams","hooks_url":"https://api.github.com/repos/google/FreeBuilder/hooks","issue_events_url":"https://api.github.com/repos/google/FreeBuilder/issues/events{/number}","events_url":"https://api.github.com/repos/google/FreeBuilder/events","assignees_url":"https://api.github.com/repos/google/FreeBuilder/assignees{/user}","branches_url":"https://api.github.com/repos/google/FreeBuilder/branches{/branch}","tags_url":"https://api.github.com/repos/google/FreeBuilder/tags","blobs_url":"https://api.github.com/repos/google/FreeBuilder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/FreeBuilder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/FreeBuilder/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/FreeBuilder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/FreeBuilder/statuses/{sha}","languages_url":"https://api.github.com/repos/google/FreeBuilder/languages","stargazers_url":"https://api.github.com/repos/google/FreeBuilder/stargazers","contributors_url":"https://api.github.com/repos/google/FreeBuilder/contributors","subscribers_url":"https://api.github.com/repos/google/FreeBuilder/subscribers","subscription_url":"https://api.github.com/repos/google/FreeBuilder/subscription","commits_url":"https://api.github.com/repos/google/FreeBuilder/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/FreeBuilder/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/FreeBuilder/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/FreeBuilder/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/FreeBuilder/contents/{+path}","compare_url":"https://api.github.com/repos/google/FreeBuilder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/FreeBuilder/merges","archive_url":"https://api.github.com/repos/google/FreeBuilder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/FreeBuilder/downloads","issues_url":"https://api.github.com/repos/google/FreeBuilder/issues{/number}","pulls_url":"https://api.github.com/repos/google/FreeBuilder/pulls{/number}","milestones_url":"https://api.github.com/repos/google/FreeBuilder/milestones{/number}","notifications_url":"https://api.github.com/repos/google/FreeBuilder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/FreeBuilder/labels{/name}","releases_url":"https://api.github.com/repos/google/FreeBuilder/releases{/id}","deployments_url":"https://api.github.com/repos/google/FreeBuilder/deployments","created_at":"2015-01-05T18:11:27Z","updated_at":"2016-09-17T14:01:52Z","pushed_at":"2016-09-22T14:59:55Z","git_url":"git://github.com/google/FreeBuilder.git","ssh_url":"git@github.com:google/FreeBuilder.git","clone_url":"https://github.com/google/FreeBuilder.git","svn_url":"https://github.com/google/FreeBuilder","homepage":"http://freebuilder.inferred.org","size":1926,"stargazers_count":374,"watchers_count":374,"language":"Java","has_issues":true,"has_downloads":false,"has_wiki":false,"has_pages":true,"forks_count":56,"mirror_url":null,"open_issues_count":46,"forks":56,"open_issues":46,"watchers":374,"default_branch":"master"}},"base":{"label":"google:master","ref":"master","sha":"7b8bc4958aa9ad7b7d1a3a050ba6791bc05494b3","user":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"repo":{"id":28824978,"name":"FreeBuilder","full_name":"google/FreeBuilder","owner":{"login":"google","id":1342004,"avatar_url":"https://avatars.githubusercontent.com/u/1342004?v=3","gravatar_id":"","url":"https://api.github.com/users/google","html_url":"https://github.com/google","followers_url":"https://api.github.com/users/google/followers","following_url":"https://api.github.com/users/google/following{/other_user}","gists_url":"https://api.github.com/users/google/gists{/gist_id}","starred_url":"https://api.github.com/users/google/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/google/subscriptions","organizations_url":"https://api.github.com/users/google/orgs","repos_url":"https://api.github.com/users/google/repos","events_url":"https://api.github.com/users/google/events{/privacy}","received_events_url":"https://api.github.com/users/google/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/google/FreeBuilder","description":"Automatic generation of the Builder pattern for Java 1.6+","fork":false,"url":"https://api.github.com/repos/google/FreeBuilder","forks_url":"https://api.github.com/repos/google/FreeBuilder/forks","keys_url":"https://api.github.com/repos/google/FreeBuilder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/google/FreeBuilder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/google/FreeBuilder/teams","hooks_url":"https://api.github.com/repos/google/FreeBuilder/hooks","issue_events_url":"https://api.github.com/repos/google/FreeBuilder/issues/events{/number}","events_url":"https://api.github.com/repos/google/FreeBuilder/events","assignees_url":"https://api.github.com/repos/google/FreeBuilder/assignees{/user}","branches_url":"https://api.github.com/repos/google/FreeBuilder/branches{/branch}","tags_url":"https://api.github.com/repos/google/FreeBuilder/tags","blobs_url":"https://api.github.com/repos/google/FreeBuilder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/google/FreeBuilder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/google/FreeBuilder/git/refs{/sha}","trees_url":"https://api.github.com/repos/google/FreeBuilder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/google/FreeBuilder/statuses/{sha}","languages_url":"https://api.github.com/repos/google/FreeBuilder/languages","stargazers_url":"https://api.github.com/repos/google/FreeBuilder/stargazers","contributors_url":"https://api.github.com/repos/google/FreeBuilder/contributors","subscribers_url":"https://api.github.com/repos/google/FreeBuilder/subscribers","subscription_url":"https://api.github.com/repos/google/FreeBuilder/subscription","commits_url":"https://api.github.com/repos/google/FreeBuilder/commits{/sha}","git_commits_url":"https://api.github.com/repos/google/FreeBuilder/git/commits{/sha}","comments_url":"https://api.github.com/repos/google/FreeBuilder/comments{/number}","issue_comment_url":"https://api.github.com/repos/google/FreeBuilder/issues/comments{/number}","contents_url":"https://api.github.com/repos/google/FreeBuilder/contents/{+path}","compare_url":"https://api.github.com/repos/google/FreeBuilder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/google/FreeBuilder/merges","archive_url":"https://api.github.com/repos/google/FreeBuilder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/google/FreeBuilder/downloads","issues_url":"https://api.github.com/repos/google/FreeBuilder/issues{/number}","pulls_url":"https://api.github.com/repos/google/FreeBuilder/pulls{/number}","milestones_url":"https://api.github.com/repos/google/FreeBuilder/milestones{/number}","notifications_url":"https://api.github.com/repos/google/FreeBuilder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/google/FreeBuilder/labels{/name}","releases_url":"https://api.github.com/repos/google/FreeBuilder/releases{/id}","deployments_url":"https://api.github.com/repos/google/FreeBuilder/deployments","created_at":"2015-01-05T18:11:27Z","updated_at":"2016-09-17T14:01:52Z","pushed_at":"2016-09-22T14:59:55Z","git_url":"git://github.com/google/FreeBuilder.git","ssh_url":"git@github.com:google/FreeBuilder.git","clone_url":"https://github.com/google/FreeBuilder.git","svn_url":"https://github.com/google/FreeBuilder","homepage":"http://freebuilder.inferred.org","size":1926,"stargazers_count":374,"watchers_count":374,"language":"Java","has_issues":true,"has_downloads":false,"has_wiki":false,"has_pages":true,"forks_count":56,"mirror_url":null,"open_issues_count":46,"forks":56,"open_issues":46,"watchers":374,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/193"},"html":{"href":"https://github.com/google/FreeBuilder/pull/193"},"issue":{"href":"https://api.github.com/repos/google/FreeBuilder/issues/193"},"comments":{"href":"https://api.github.com/repos/google/FreeBuilder/issues/193/comments"},"review_comments":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/193/comments"},"review_comment":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/google/FreeBuilder/pulls/193/commits"},"statuses":{"href":"https://api.github.com/repos/google/FreeBuilder/statuses/cfb13d950ec9838edb281d3e84ccca2788982d5b"}}}}
{"actor":{"display_login":"chrisalice"}}